<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>各公共类使用demo</title>
    <style type="text/css">
        input{
            display:inline-block;
        }
        fieldset {
            width: 100%;
            border: 2px solid #006600;
        }
        legend {
            font-family: Verdana, Arial, Helvetica, sans-serif;
            font-size: 30px;
            font-weight: bold;
        }
        ul {
            margin: 10px;
            padding: 0px;
            background-color: #FFFFCC;
        }
        li {
            font-size: 20px;
            list-style: none;
            font-family: Verdana, Arial, Helvetica, sans-serif;
            line-height: 180%;
        }
        .code {
            margin: 10px;
            padding: 0px;
            background-color: #01a918;
        }
        .ps {
            margin: 10px;
            padding: 0px;
            background-color: #01a918;
        }
    </style>
</head>

<body>
<fieldset>

    <legend>一：文件上传类:</legend>
    <div class="code">demo:</div>
    <ul>
        <li>
            <form action="/demo/upload" method="post" enctype="multipart/form-data" >
                pic:<input type="file" name="pic" value="浏览">
                <input type="submit" value="上传"/><br>
            </form>
        </li>
    </ul>
    <div class="code">使用方法:</div>
    <div>
        <pre>
    1、定义你的viewform控制器:
        内容如同demo;
    2、定义你的doform控制器(具体参数请看注释内容):
        public function uploadAction() {
            $up = new Upload(array('json'=>false,'path'=>'/upload/','maxsize'=>'2000000','allowtype'=>array("gif", "png", "jpg","jpeg","php"),'israndname'=>true));
            //设置属性(返回类型是否json数据，上传的位置(支持创建文件夹)， 大小maxsize=2000000表示2M文件大小， 允许文件类型， 名是是否要随机生成)
            $result=$up -> upload("pic");
            //使用对象中的upload方法， 就可以上传文件， 方法需要传一个上传表单控件的名子 pic, 如果成功返回:
            //array(3) { ["code"]=> int(0) ["codeMess"]=> string(12) "上传成功" ["url"]=> string(30) "/upload/20160819051206_733.jpg" }
            //失败返回:
            //array(2) { ["code"]=> int(-1) ["codeMess"]=> string(77) "上传文件【putty_V0.63.0.0.43510830.exe】时出错 : 未允许类型" }
            //具体参数含义请看改类的config 若有疑问请找邸朝峰
            //code错误字典：0:"上传成功";4:"没有文件被上传"; 3:"文件只有部分被上传";2:"上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值";1:"上传的文件超过了php.ini中upload_max_filesize选项限制的值";-1:"未允许类型";-2:"文件过大,上传的文件不能超过{$this->maxsize}个字节";-3:"上传失败";-4: "建立存放上传文件目录失败，请重新指定上传目录";-5:"必须指定上传文件的路径";其他为未知错误
            if($result['code']==0){  //成功
                echo $result['codeMess'];
            }else{ 					//失败
                echo $result['codeMess'];
            }
            exit();
        }
        </pre>
    </div>
</fieldset>

<fieldset>

    <legend>二：验证码类:</legend>
    <div class="code">demo:</div>
    <ul>
        <li>
            简单的数字验证码:<img src="/demo/getCode?type=0">
            汉子验证码:<img src="/demo/getCode?type=1">
        </li>
    </ul>
    <div class="code">使用方法:</div>
    <div>
        <pre>
    1、定义你的viewcode控制器:
        内容如同demo;
    2、定义你的getCode控制器(具体参数请看注释内容):
            public function getCodeAction()
            {
                $type = isset($_GET['type']) ? $_GET['type'] : 0;//type参数做多种demo展示
                if ($type == 0) {
                    $verify = new Verify(array('length' => 4,'useCurve'=>false,'useNoise'=>false));//数字验证码
                    $verify->entry(1000);  //数字1000为该code对应的唯一 sessinid 与check验证对接
                } elseif ($type == 1) {
                    $verify = new Verify(array("fontSize" => 20, "useZh" => true, 'imageH' => 50, 'imageW' => 150, 'length' => 4,'useCurve'=>false,'useNoise'=>false));//字体大小 ,中文,  图片高度   ,图片宽度,  验证码长度
                    $verify->entry(1002);  //数字1002为该code对应的唯一 sessinid 与check验证对接
                }

            }
    3、调用check检查验证码是否有效：
            $verify = new Verify();
            $verify->check(1000);//需传入 上面 唯一的app sessinid，此处应为：1000或者1002
        </pre>
    </div>
</fieldset>
<fieldset>

    <legend>三：分页类:</legend>
    <div class="code">demo:</div>
    <ul>
        <li>
            需配合模型进行分页 这里我用cash模型 做一个demo，<a href="/demo/getCash">点击查看完整demo</a>
        </li>
    </ul>
    <div class="code">使用方法:</div>
    <div>
        <pre>
    1、定义你的控制器
        /*
         * 分页demo by dichaofeng
         * 动态分页或ajax无刷新分页 动态拼接分页参数、分页url 且保留分页前filter条件 默认分页样式
         * args 具体参数请看Pages.php类
         */
        public function getCashAction()
        {
            $this->CashModel=new CashModel();             //实例化模型
            $user_id=1;
            $page = isset($_GET['page']) ? $_GET['page'] : 1;//获取当前页码 页码若有多处分页 请修改此page,否则没有选中的状态
            $asset_info = $this->CashModel->selectInfo($user_id, $page, 10); //获取模型list 根据当前偏移量
            $count = $this->CashModel->selectCount($user_id);       //获取模型 总页数
            $pages = new Pages($page, $count, 10);                  //创建分页类
            $this->getView()->assign("pages", $pages->getView());   //注册pages到模板
            $this->getView()->assign("asset_info",$asset_info);     //注册list到模板
        }
    2、具体模型层selectInfo、selectCount代码请参考 CashModel.php
    3、对分页条件where进行组装，即分页的href 根据$_GET进行自动组装，若不需要对 $_GET['do']='ajax' 组装请看下面demo：
            unset($_GET['do']);                                     //在pages创建前销毁$_GET['do']
            $pages = new Pages($page, $count, 10);                  //创建分页类
            $this->getView()->assign("pages", $pages->getView());   //注册pages到模板
    4、ajax 调用方式：
        public function getCashAction()
        {
            $this->CashModel=new CashModel();             //实例化模型
            $user_id=1;
            $page = isset($_GET['page']) ? $_GET['page'] : 1;//获取当前页码 页码若有多处分页 请修改此page,否则没有选中的状态
            $asset_info = $this->CashModel->selectInfo($user_id, $page, 10); //获取模型list 根据当前偏移量
            $count = $this->CashModel->selectCount($user_id);       //获取模型 总页数
            $pages = new Pages($page, $count, 10);                  //创建分页类
            $result=json_encode(array('data'=>$asset_info,'page'=>$pages->getView()));  //生成 json数据 格式{data:[],page:[]}
            echo $result;                               //输出json
            exit();
        }
        </pre>
    </div>
</fieldset>
<fieldset>

    <legend>四：Yafconf类:</legend>
    <div class="code">demo:</div>
    <ul>
        <li>
            Yafconf类实现 windows开发使用配置文件，linux使用高大上的、看不到、摸不到、的yafconf
        </li>
    </ul>
    <div class="code">使用方法:</div>
    <div>
        <pre>
            该类已兼容开发 与服务器动态 加载yafconf，具体代码请看yafconf ，该类仅为开发提供方便，希望有人能改进~
        </pre>
    </div>
</fieldset>
<fieldset>

    <legend>五：win开发环境:</legend>
    <div class="code">demo:</div>
    <ul>
        <li>
           请访问：http://192.168.10.241  local开发环境 > windows >xxx任意版 >xampp.zip
        </li>
    </ul>
</fieldset>
</body>
</html>
